package com.smart.redisson.aop;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

/**
 * 定义切面类    ioc  aop  事务
 * 定义切入点
 */
@Aspect
@Component
public class HelloAop {
    /**
     * 切入点表达式
     * 使用注解
     */
    @Pointcut("@annotation(com.smart.redisson.aop.TestAnnotation)")
    public void pointcut() {
    }

    @Around("pointcut()")
    public Object around(ProceedingJoinPoint pjp) {
        // 执行核心代码
        Object proceed = null;
        try {
            // 执行方法
            proceed = pjp.proceed();
        } catch (Throwable throwable) {
            throwable.printStackTrace();
        } finally {

        }
        return proceed;
    }

/**
 * 前置通知
 * 后置通知
 * 返回通知
 * 异常通知
 * 环绕通知
 */


}
